# 全局变量
num1 = 10  # 不可变数据类型
list1 = [1, 2, 3, 4, 5]  # 可变数据
num1 = "jjfjfjfj"


# 尽管您对变量 num1 进行了两次赋值，但每次赋值都是创建了一个新的不可变
# 对象（第一次是整数 10，第二次是字符串 "jjfjfjfj"），
# 并改变了 num1 所引用的对象，而非直接修改原有对象的值。
# 这就是不可变数据类型在Python中的行为：它们的值不能被更改，
# 只能通过创建新对象并重新赋值来实现“变化”。


def f():
    # 声明在f函数中使用num1是来自全局变量num1
    # global的作用是让函数中的变量可以修改全局变量的值
    global num1
    num1 = True
    num2 = 20  # 局部变量
    list1[2] = 8
    print('在函数中打印num1的值', num1)
    print('在函数中打印list1的值', list1)
    print('在函数中打印num2的值', num2)


f()
# 局部变量不能再函数外使用
print('在函数中打印num1的值', num1)
print('在函数中打印list1的值', list1)
# print('在函数中打印num2的值', num2)
